import java.util.Arrays;
import java.util.Scanner;

/**
 * @author : niu niu
 * @version : 1.0.0
 * @date : 2022/10/13 16:42
 * //字符串中找出连续最长的数字串
 * //数组中出现次数超过一半的数字
 */
public class Day3 {
    public static void main(String[] args) {
        //[1,2,3,2,2,2,5,4,2]
        int[] arr = new int[]{1, 2, 3, 2, 2, 2, 5, 4, 2};
        System.out.println(MoreThanHalfNum_Solution(arr));
    }

    public static int MoreThanHalfNum_Solution(int[] numbers) {
        // write code here
        //摩尔投票法
        //⼀个是数组中的某个数字（初始化为数组中第一个数字），
        // ⼀个是该数字记为众数的票数（初始化为 1）。
        // 当我们遍历到下⼀个数字的时候， 如果下⼀个数字和我们之前保存的数字相同，
        // 则票数+1； 如果下⼀个数字和我们之前保存的数字不同， 则票数-1。
        // 如果票数变为 0，我们需要替换保存下⼀个数字，
        // 并把其对应的票数设为1。
        // 由于我们要找的数字出现的次数⽐其他所有数字出现的次数之和还要多，
        // 那么要找的数字肯定是最后⼀次把票数设为 1时对应的数字
        if (numbers.length == 0) return 0;
        int res = numbers[0];
        int vote = 1;
        for (int i = 1; i < numbers.length; i++) {
            if (vote == 0) {
                res = numbers[i];
                vote = 1;
            } else if (numbers[i] == res) {
                vote++;
            } else {
                vote--;
            }
        }
        return res;
    }


    public static void main1(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = null;
        str = scanner.nextLine();

        int tem = 0;
        int max = 0;
        StringBuilder stringBuilder = new StringBuilder();
        char[] charStr = str.toCharArray();
        String retStr = null;
        for (int i = 0; i < charStr.length; i++) {
            if (charStr[i] >= '0' && charStr[i] <= '9') {
                //记录
                stringBuilder.append(charStr[i]);
                tem++;
            } else {
                //清空
                tem = 0;
                stringBuilder.delete(0, stringBuilder.length());
            }
            if (max < tem) {
                //一直存放最长的 数字字符串 遍历结束时，必然时最长子串
                max = tem;
                retStr = stringBuilder.toString();
            }
        }
        System.out.println(retStr);

    }

}
